package io;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 *  java IO 输入与输出
 *  java IO可以让我们的java程序与外界设备交换数据.
 *  其中将输入与输出两个方向分别表示读与写的功能.
 *  输入:用来读取,是从外界到程序的方向.是获取的功能.
 *  输出:用来写出,是从程序到外界的方向.是发送的功能.
 *
 *  java将IO比喻为"流"(stream).相当于是连接我们的程序和设备之间的"管道".使得数据可以向
 *  顺着同一方向移动(输入或输出).
 *  java定义了两个超类:
 *  java.io.InputStream:输入流超类,它是所有字节输入流的超类,里面定义了读取字节的方法.
 *  java.io.OutputStream:输出流超类,是所有字节输出流的超类,定义了写出字节的方法.
 *
 *  文件流:
 *  用于连接程序与文件的"管道".使用这对流可以对文件进行数据的读写操作
 */
public class FOSDemo {
    public static void main(String[] args) throws IOException {
        //向当前目录下的fos.dat文件中写入字节数据
        /*
            FileOutputStream(File file)
            FileOutputStream(String path)
         */
//        File file = new File("./fos.dat");
//        FileOutputStream fos = new FileOutputStream(file);

        FileOutputStream fos = new FileOutputStream("./fos.dat");

        /*
            字节输出流OutputStream中定义了写出字节的方法:
            void write(int d)
            写出一个字节，写出的是给定的int值对应的2进制的"低八位"。
         */
        /*
            int型整数1的二进制样子:
                                       vvvvvvvv
            00000000 00000000 00000000 00000001

            fos.dat文件内容:
            00000001
         */
        fos.write(1);
        /*
            int型整数2的二进制样子:
                                       vvvvvvvv
            00000000 00000000 00000000 00000100

            fos.dat文件内容:
            00000001 00000100
         */
        fos.write(4);
        System.out.println("写出完毕!");

        //流在使用完毕后要关闭
        fos.close();

    }
}







